// 某学校需要开发一个学生管理系统，要求对不同角色的人员进行统一管理。系统中需要定义人员的基本信息和行为规范。
// 练习要求
// 接口设计
// 创建一个 Person 接口，包含以下成员：
// id: 数字类型，表示唯一标识符
// name: 字符串类型，表示姓名
// getEmail(): 方法，返回值为字符串类型，用于获取邮箱地址
// 创建一个 Contact 接口，包含以下成员：
// phoneNumber: 字符串类型，表示联系电话
// address: 字符串类型，表示居住地址
// 类实现
// 创建一个 Student 类，同时实现 Person 和 Contact 接口
// Student 类应包含以下属性：
// studentId: 学号（数字类型）
// grade: 年级（字符串类型）
// 以及实现接口所需的所有属性
// 构造函数应能初始化所有必要属性
// 实现 getEmail() 方法，返回格式为 "学号@school.com" 的邮箱地址
// 功能验证
// 创建 Student 实例，传入相应参数
// 调用各类属性和方法，验证实现是否正确
interface Person{
    id:number;
    name:string;
    getEmail():string;
}

interface Contact{
    phoneNumber:string;
    address:string;
}

class Student implements Person,Contact{
    id:number;
    name:string;
    phoneNumber:string;
    address:string;
    studentId:number;
    grade:string;

    constructor(id:number,name:string,phoneNumber:string,address:string,studentId:number,grade:string){
        this.id = id;
        this.name = name;
        this.phoneNumber = phoneNumber;
        this.address = address;
        this.studentId = studentId;
        this.grade = grade;
    }
    getEmail():string{
        return `${this.studentId}@school.com`;
    }
    getInfo():void{
        console.log(`学号：${this.studentId}`);
        console.log(`姓名：${this.name}`);
        console.log(`年级：${this.grade}`);
        console.log(`邮箱：${this.getEmail()}`);
        console.log(`电话：${this.phoneNumber}`);
        console.log(`地址：${this.address}`);
    }
}

let student = new Student(1,"张三","12345678901","北京",2023001,"2023级");
student.getInfo();
console.log(student.getEmail());